package com.tiger.cloud.model.crm;

import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.sql.Timestamp;

import org.apache.commons.lang3.builder.ToStringBuilder;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.tiger.cloud.common.mybatis.TigerBaseEntity;
import com.tiger.cloud.enums.DeleteEnum;
import com.tiger.cloud.enums.UserCompanyInfoCommentType;
import com.tiger.cloud.enums.UserCompanyInfoDoorCommunication;
import com.tiger.cloud.enums.UserCompanyInfoIAreaType;
import com.tiger.cloud.enums.UserCompanyInfoIBizType;
import com.tiger.cloud.enums.UserCompanyInfoUsers;
import com.tiger.cloud.security.EncodeUtil;

import io.swagger.annotations.ApiModelProperty;
/**
 * 
 * crm_user_company_info-用户企业信息
 *
 */
public class UserCompanyInfo extends TigerBaseEntity{

	private static final long serialVersionUID = 1L;
    
	/**
	 * 用户个人信息ID
	 */
	@ApiModelProperty(value = "用户个人信息ID")
    private Long userInfoId;
	/**
	 * 所属用户
	 */
	@ApiModelProperty(value = "所属用户")
    private Long userId;
	/**
	 * 序号
	 */
	@ApiModelProperty(value = "序号")
    private Integer companyNo;
	/**
	 * 公司名称
	 */
	@ApiModelProperty(value = "公司名称")
    private String companyName;
	/**
	 * 公司地址
	 */
	@ApiModelProperty(value = "公司地址")
    private String address;
	/**
	 * 业务区域
	 */
	@ApiModelProperty(value = "业务区域")
    private String area;
	/**
	 * 放款最小值
	 */
	@ApiModelProperty(value = "放款最小值")
    private BigDecimal rangeLoanMin;
	/**
	 * 放款最大值
	 */
	@ApiModelProperty(value = "放款最大值")
    private BigDecimal rangeLoanMax;
	/**
	 * 其它费用最小值
	 */
	@ApiModelProperty(value = "其它费用最小值")
    private BigDecimal otherFeeMin;
	/**
	 * 其它费用最大值
	 */
	@ApiModelProperty(value = "其它费用最大值")
    private BigDecimal otherFeeMax;
	/**
	 * 先息后本-->利息最大值
	 */
	@ApiModelProperty(value = "先息后本-->利息最大值")
    private BigDecimal fiRangeMax;
	/**
	 * 先息后本-->利息最小值
	 */
	@ApiModelProperty(value = "先息后本-->利息最小值")
    private BigDecimal fiRangeMin;
	/**
	 * 等额本息-->利息最小值
	 */
	@ApiModelProperty(value = "等额本息-->利息最小值")
    private BigDecimal acRangeMin;
	/**
	 * 等额本息-->利息最大值
	 */
	@ApiModelProperty(value = "等额本息-->利息最大值")
    private BigDecimal acRangeMax;
	/**
	 * 0:车辆抵押、1:无抵押、2:零用贷、3:垫资、4:不动产抵押、5:其他抵押、6:中介服务
	 */
	@ApiModelProperty(value = "0:车辆抵押、1:无抵押、2:零用贷、3:垫资、4:不动产抵押、5:其他抵押、6:中介服务")
    private UserCompanyInfoIBizType bizType;
	/**
	 * 0:单体公司、1:城市性、2:区域性、3:全国性
	 */
	@ApiModelProperty(value = "0:单体公司、1:城市性、2:区域性、3:全国性")
    private UserCompanyInfoIAreaType areaType;
	/**
	 * 公司人数: 0:<10,1:1~30,2:31~100,3:>100
	 */
	@ApiModelProperty(value = "公司人数: 0:<10,1:1~30,2:31~100,3:>100")
    private UserCompanyInfoUsers employee;
	/**
	 * 上班时间 类似如:  周一到周五，8:00到18:00
	 */
	@ApiModelProperty(value = "上班时间 类似如:  周一到周五，8:00到18:00")
    private String workTimeFirst;
	/**
	 * 上班时间 类似如:  周一到周五，8:00到18:00
	 */
	@ApiModelProperty(value = "上班时间 类似如:  周一到周五，8:00到18:00")
	private String workTimeSecond;
	/**
	 * 工作多长时间   3年
	 */
	@ApiModelProperty(value = "工作多长时间   3年")
    private String workPeriod;
	/**
	 * 是否删除, 0:正常,1:删除
	 */
	@ApiModelProperty(value = "是否删除, 0:正常,1:删除")
	private DeleteEnum isDelete;
	/**
	 * 收入情况
	 */
	@ApiModelProperty(value = "收入情况")
    private BigDecimal income;
	/**
	 * 公司备注
	 */
	@ApiModelProperty(value = "公司备注")
    private String companyInfo;

    @JsonIgnore
    private String companyInfo_;
	/**
	 * 公司图片
	 */
	@ApiModelProperty(value = "公司图片")
    private String companyAttachment;
	/**
	 * 
	 */
	@ApiModelProperty(value = "")
    private Timestamp createTime;
	/**
	 * 
	 */
	@ApiModelProperty(value = "")
    private Timestamp lastUpdateTime;
	/**
	 * 公司所在地区---省
	 */
	@ApiModelProperty(value = "公司所在地区---省")
    private Long provinceId;
	/**
	 * 公司所在地区---市
	 */
	@ApiModelProperty(value = "公司所在地区---市")
    private Long cityId;
	/**
	 * 公司所在地区---区
	 */
	@ApiModelProperty(value = "公司所在地区---区")
    private Long districtId;
	/**
	 * 公司所在地区---省
	 */
	@ApiModelProperty(value = "公司所在地区---省")
    private String provinceName;
	/**
	 * 公司所在地区---市
	 */
	@ApiModelProperty(value = "公司所在地区---市")
    private String cityName;
	/**
	 * 公司所在地区---区
	 */
	@ApiModelProperty(value = "公司所在地区---区")
    private String districtName;
	/**
	 * 在公司服务开始时间
	 */
	@ApiModelProperty(value = "在公司服务开始时间")
    private String duringCompanyServiceStarttTime;
	/**
	 * 在公司服务结束时间
	 */
	@ApiModelProperty(value = "在公司服务结束时间")
    private String duringCompanyServiceEndTime;
	/**
	 * 平均月业绩
	 */
	@ApiModelProperty(value = "平均月业绩")
    private String averageMonthlyPerformance;
	/**
	 * 对自己的评论类型  1:优秀，2:好，3:一般，4:差，0:很差（默认好）
	 */
	@ApiModelProperty(value = "对自己的评论类型  1:优秀，2:好，3:一般，4:差，0:很差（默认好）")
    private UserCompanyInfoCommentType owerCommentType;
	/**
	 * 
	 */
	@ApiModelProperty(value = "UserCompanyInfoDoorCommunication")
    private UserCompanyInfoDoorCommunication isDoorCommunication;
    
    public UserCompanyInfo(){
    
    }
    
    public Long getUserInfoId() {
        return this.userInfoId;
    }
    
    public void setUserInfoId(Long userInfoId) {
        this.userInfoId = userInfoId;
    }
    public Long getUserId() {
        return this.userId;
    }
    
    public void setUserId(Long userId) {
        this.userId = userId;
    }
    public Integer getCompanyNo() {
        return this.companyNo;
    }
    
    public void setCompanyNo(Integer companyNo) {
        this.companyNo = companyNo;
    }
    public String getCompanyName() {
        return this.companyName;
    }
    
    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }
    public String getAddress() {
        return this.address;
    }
    
    public void setAddress(String address) {
        this.address = address;
    }
    public String getArea() {
        return this.area;
    }
    
    public void setArea(String area) {
        this.area = area;
    }
    public BigDecimal getRangeLoanMin() {
        return this.rangeLoanMin;
    }
    
    public void setRangeLoanMin(BigDecimal rangeLoanMin) {
        this.rangeLoanMin = rangeLoanMin;
    }
    public BigDecimal getRangeLoanMax() {
        return this.rangeLoanMax;
    }
    
    public void setRangeLoanMax(BigDecimal rangeLoanMax) {
        this.rangeLoanMax = rangeLoanMax;
    }
    public BigDecimal getOtherFeeMin() {
        return this.otherFeeMin;
    }
    
    public void setOtherFeeMin(BigDecimal otherFeeMin) {
        this.otherFeeMin = otherFeeMin;
    }
    public BigDecimal getOtherFeeMax() {
        return this.otherFeeMax;
    }
    
    public void setOtherFeeMax(BigDecimal otherFeeMax) {
        this.otherFeeMax = otherFeeMax;
    }
    public BigDecimal getFiRangeMax() {
        return this.fiRangeMax;
    }
    
    public void setFiRangeMax(BigDecimal fiRangeMax) {
        this.fiRangeMax = fiRangeMax;
    }
    public BigDecimal getFiRangeMin() {
        return this.fiRangeMin;
    }
    
    public void setFiRangeMin(BigDecimal fiRangeMin) {
        this.fiRangeMin = fiRangeMin;
    }
    public BigDecimal getAcRangeMin() {
        return this.acRangeMin;
    }
    
    public void setAcRangeMin(BigDecimal acRangeMin) {
        this.acRangeMin = acRangeMin;
    }
    public BigDecimal getAcRangeMax() {
        return this.acRangeMax;
    }
    
    public void setAcRangeMax(BigDecimal acRangeMax) {
        this.acRangeMax = acRangeMax;
    }
    public UserCompanyInfoIBizType getBizType() {
        return this.bizType;
    }
    
    public void setBizType(UserCompanyInfoIBizType bizType) {
        this.bizType = bizType;
    }
    public UserCompanyInfoIAreaType getAreaType() {
        return this.areaType;
    }
    
    public void setAreaType(UserCompanyInfoIAreaType areaType) {
        this.areaType = areaType;
    }
    public UserCompanyInfoUsers getEmployee() {
        return this.employee;
    }
    
    public void setEmployee(UserCompanyInfoUsers employee) {
        this.employee = employee;
    }
    
    public String getWorkTimeFirst() {
		return workTimeFirst;
	}

	public void setWorkTimeFirst(String workTimeFirst) {
		this.workTimeFirst = workTimeFirst;
	}

	public String getWorkTimeSecond() {
		return workTimeSecond;
	}

	public void setWorkTimeSecond(String workTimeSecond) {
		this.workTimeSecond = workTimeSecond;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public String getWorkPeriod() {
        return this.workPeriod;
    }
    
    public void setWorkPeriod(String workPeriod) {
        this.workPeriod = workPeriod;
    }
    public DeleteEnum getIsDelete() {
        return this.isDelete;
    }
    
    public void setIsDelete(DeleteEnum isDelete) {
        this.isDelete = isDelete;
    }
    public BigDecimal getIncome() {
        return this.income;
    }
    
    public void setIncome(BigDecimal income) {
        this.income = income;
    }
    public String getCompanyInfo_() {
        if(null == companyInfo){
            return null;
        }
        try {
            return EncodeUtil.urlEncode(companyInfo);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        };
        return null;
    }

    public void setCompanyInfo_(String companyInfo_) {
        if(null == companyInfo_){
            return;
        }
        try {
            this.companyInfo= EncodeUtil.urlDecode(companyInfo_);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        };
    }
    public String getCompanyInfo() {
        if(null == companyInfo){
            return null;
        }
        try {
            return EncodeUtil.urlDecode(companyInfo);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        };
        return null;
    }
    
    public void setCompanyInfo(String companyInfo) {
        this.companyInfo = companyInfo;
    }
    public String getCompanyAttachment() {
        return this.companyAttachment;
    }
    
    public void setCompanyAttachment(String companyAttachment) {
        this.companyAttachment = companyAttachment;
    }
    public Timestamp getCreateTime() {
        return this.createTime;
    }
    
    public void setCreateTime(Timestamp createTime) {
        this.createTime = createTime;
    }
    public Timestamp getLastUpdateTime() {
        return this.lastUpdateTime;
    }
    
    public void setLastUpdateTime(Timestamp lastUpdateTime) {
        this.lastUpdateTime = lastUpdateTime;
    }
    public Long getProvinceId() {
        return this.provinceId;
    }
    
    public void setProvinceId(Long provinceId) {
        this.provinceId = provinceId;
    }
    public Long getCityId() {
        return this.cityId;
    }
    
    public void setCityId(Long cityId) {
        this.cityId = cityId;
    }
    public Long getDistrictId() {
        return this.districtId;
    }
    
    public void setDistrictId(Long districtId) {
        this.districtId = districtId;
    }
    public String getProvinceName() {
        return this.provinceName;
    }
    
    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }
    public String getCityName() {
        return this.cityName;
    }
    
    public void setCityName(String cityName) {
        this.cityName = cityName;
    }
    public String getDistrictName() {
        return this.districtName;
    }
    
    public void setDistrictName(String districtName) {
        this.districtName = districtName;
    }
    public String getDuringCompanyServiceStarttTime() {
        return this.duringCompanyServiceStarttTime;
    }
    
    public void setDuringCompanyServiceStarttTime(String duringCompanyServiceStarttTime) {
        this.duringCompanyServiceStarttTime = duringCompanyServiceStarttTime;
    }
    public String getDuringCompanyServiceEndTime() {
        return this.duringCompanyServiceEndTime;
    }
    
    public void setDuringCompanyServiceEndTime(String duringCompanyServiceEndTime) {
        this.duringCompanyServiceEndTime = duringCompanyServiceEndTime;
    }
    public String getAverageMonthlyPerformance() {
        return this.averageMonthlyPerformance;
    }
    
    public void setAverageMonthlyPerformance(String averageMonthlyPerformance) {
        this.averageMonthlyPerformance = averageMonthlyPerformance;
    }
    public UserCompanyInfoCommentType getOwerCommentType() {
        return this.owerCommentType;
    }
    
    public void setOwerCommentType(UserCompanyInfoCommentType owerCommentType) {
        this.owerCommentType = owerCommentType;
    }
    public UserCompanyInfoDoorCommunication getIsDoorCommunication() {
        return this.isDoorCommunication;
    }
    
    public void setIsDoorCommunication(UserCompanyInfoDoorCommunication isDoorCommunication) {
        this.isDoorCommunication = isDoorCommunication;
    }
    
	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}
}